package com.estore.service;

import com.estore.model.Product;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

public class ProductService {
    private Map<String, Product> productData;

    public ProductService() {
        productData = new HashMap<>();
        initDefaultData(); // 初始化商品数据（包含带标签的商品）
    }

    /**
     * 初始化默认商品数据，包含带标签的商品和重复标签验证
     */
    private void initDefaultData() {
        // 1. 为Java核心技术书籍添加标签（编程、畅销）
        Set<String> javaBookTags = new HashSet<>();
        javaBookTags.add("编程");
        javaBookTags.add("畅销");
        productData.put("p001", new Product("p001", "Java核心技术", 99.0, 100, javaBookTags));

        // 2. 为Python入门书籍添加标签（编程、入门）
        Set<String> pythonBookTags = new HashSet<>();
        pythonBookTags.add("编程");
        pythonBookTags.add("入门");
        productData.put("p002", new Product("p002", "Python编程：从入门到实践", 89.0, 80, pythonBookTags));

        // 3. 为算法书籍添加重复标签（验证Set去重特性）
        Set<String> algorithmTags = new HashSet<>();
        algorithmTags.add("热门");  // 重复添加
        algorithmTags.add("热门");  // 重复添加（Set会自动去重）
        algorithmTags.add("计算机");
        algorithmTags.add("计算机"); // 重复添加（Set会自动去重）
        productData.put("p003", new Product("p003", "数据结构与算法分析", 108.0, 50, algorithmTags));

        // 4. 无标签商品（验证默认空标签集合）
        productData.put("p004", new Product("p004", "机器学习实战", 129.0, 30));
    }

    /**
     * 根据ID查询商品
     */
    public Product getProductById(String id) {
        return productData.get(id);
    }

    /**
     * 获取所有商品（返回副本，防止外部修改原始数据）
     */
    public Map<String, Product> getAllProducts() {
        return new HashMap<>(productData);
    }
}